This invention relates to the field of computer system communications. More particularly, a method and apparatus are provided for dynamic, adaptive and preemptive scheduling of data for transmission over a communication link, based on different classes of service desired for different data.
In a computer system operating multiple applications and/or utilities, it is often desirable to provide different qualities or priorities of service for data generated by the different programs. Where the data is to be transmitted to another computer system, for example, one type or class of data may be more sensitive to processing delays than another. Data of this type may thus be assigned a relatively high priority or quality of service. For example, a real-time application executing on one computer may rely on a steady feed of audio or visual data from another computer system, without which a degradation in performance will be very apparent. In contrast, data destined for an electronic mail application may be delayed without having a significant or even noticeable impact.
A host computer system operating multiple applications and generating data to be transmitted to one or more connected computer systems often possesses only a single communication link that must be shared by the applications. All outgoing traffic must therefore pass through the one connection, or port, regardless of the priority or quality of service that is desired for the information. Because the one port acts as a potential choke point, it becomes more difficult to ensure the desired level of service for each type of information.
Present methods of prioritizing outgoing information (e.g., for servicing by a processor or processing through a network protocol stack) generally involve software solutions. These types of methods may, for example, affect the order in which outgoing data are transferred from a host computer to a device (e.g., a network interface circuit or card (NIC)) that controls the communication link. For example, information/data from different applications may be placed in different host queues and passed to the device according to a schedule that allocates more resources (e.g., processor time) to one type or class of information than another.
Such methods are inadequate. In particular, these schemes simply serve to move potential congestion from the interface between the host computer and the communication interface device to the device itself. For example, when outbound data (e.g., packets) are received at a NIC, the traffic is typically processed and dispatched in the order received, regardless of the quality of service that was desired or assigned to the data by the host computer. Software mechanisms on the host can only affect the order in which outgoing data are received at its communication device. And, although the host computer may be able to monitor the level of outgoing data within each of its outgoing queues, it cannot directly monitor any congestion within the device. This necessarily limits the manner and effectiveness with which a host computer can alleviate congestion and enforce desired qualities of service.
More particularly, data transmission schemes that rely on software methods of providing quality of service do not permit the preemption of outgoing data after the data are transferred to a communication interface device. Therefore, if a plethora of relatively low-priority data has been transferred to the device, followed by high-priority data, the lower-priority data cannot be preempted even if necessary to ensure the necessary quality of service for the high-priority data. Enabling such preemption in the communication device would allow qualities of service, to be more accurately enforced. As a result, network traffic (e.g., real-time data) requiring timely transfer to the network would be more likely to have its requirements satisfied.
Thus, what is needed is a method and apparatus for providing a hardware-based system for queuing or scheduling packets for transmission over a communication link shared by multiple applications operating on a host computer system. Advantageously, such a method may be implemented in the host's communication device, such as a network interface circuit or card. In addition, it is desirable to allow dynamic alteration of priorities or the criteria affecting the quality of service to be afforded to different classes of data.